
package com.example.demo.controller;


import com.example.demo.JSON2.User;
import com.example.demo.tool.B;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.*;
//演示响应json数据

  //@ResponseBody,加上这个注解，请求不跳转页面，把return的值响应给前段


@Controller    //注解，说明这个类是一个控制器
public class demo2JSONcontroller {

    //json1;将字符串响应成json数据
    @GetMapping("/json1")
    @ResponseBody  //将返回值响应成json数据
    public String json1(){
      String str="{\"id\":1,username:\"admin\"}"; //  括号里边和外部的双引号有冲突加\转义   \"admin\"
        return str;
    }



    //json2;将对象响应成json数据
     @GetMapping("/json2")
    @ResponseBody  //将返回值响应成json数据
    public User json2(){

        User user = new User();

        user.setUsername("小米");
        user.setPassword("123");
        user.setId(2);
        user.setBirth(new Date());
        user.setScore(0.02);
        ArrayList<String> list=new ArrayList<String>();
        list.add("123");
        list.add("300");
        list.add("200");
        user.setPhonenumber(list);

        return user;
    }



    //json3,将map响应成json数据
    @GetMapping("/json3")
    @ResponseBody  //将返回值map响应成json数据
    public Map<String,Object> json3(){
        HashMap<String,Object> map=new HashMap<>();
        map.put("id",3);
        map.put("username","王文");
        map.put("score",2.33);
        map.put("birth",new Date());
        ArrayList<String> list=new ArrayList<String>();
        list.add("123");
        list.add("300");
        list.add("200");
        map.put("Phonenumber",list);
        return map;
    }


    //json4,将list(里面是数组)响应成json数据

    //@RequestMapping(value = {"/js1","/js2"})
    @RequestMapping(value = "/js1",method = RequestMethod.GET)
    //@GetMapping("/json4")
    @ResponseBody  //将返回值map响应成json数据
    public List<String> json4(){

        ArrayList<String> staff=new ArrayList<String>();
        staff.add("北京");
        staff.add("上海");
        staff.add("广州");
        // 返回的是数组[""]
        return staff;
    }


    //json5,将list(里面是对象)响应成json数据
    @GetMapping("/json5")
    @ResponseBody  //将返回值map响应成json数据
    public List<User> json5(){

        ArrayList<User> list=new ArrayList<>();
        User user = new User();
        list.add(new User());
        //list.add(new user());
        //list.add(new user());

        return list;
    }


    //json6,统一json格式，返回a,模拟登陆成功，返回一个对象
    @GetMapping("/json6")
    @ResponseBody  //将对象响应成json数据
    public B json6(){  //和json2一样，自己造类，需要generate后g and s

        B b = new B(); //相当于int i=0;
        b.setCode(2000);
        b.setMsg("登录成功");
        b.setData(new User());
        return b;  //相当于return i;
    }


    //json7,统一json格式，返回a,模拟登陆成功，返回一个对象
    @GetMapping("/json7")
    @ResponseBody  //将对象响应成json数据
    public B json7(){  //和json2一样，自己造类，需要generate后g and s

        B b = new B(); //相当于int i=0;
        ArrayList<String> staff=new ArrayList<>();
        staff.add("北京");
        staff.add("上海");
        staff.add("广州");
        b.setCode(2000);
        b.setMsg("查询全程数据成功");
        b.setData(staff);

       // return b;  //相当于return i;
        //简化上面的代码，不用每次set,用工具发放,构造方法
        //方法名和类名一致
        //没有具体的返回值
        //重载：方法名相同，参数列表不同，与返回值无关

       // return B.ok(404,"登录成功！！",new User());  //相当于return i;
        return B.ok(404,"登录成功！！",staff);

    }

}
